1. java中判断输入对象类型
搂主很有想法,这涉及到你想得到多少种对象,虽然这个问题有点无聊,但也可以视为一个练习思维的例子。
首先,前提是不知道有哪些对象类型,以及其表现形式。
其次,2楼说的对,Java输入都是String。
因此,我们设计一下要做的事情:
1. 提供一组对象类型名称和判断方法的注册列表。
2. 对给定的String,按照注册列表中的判断方法逐一执行,假如有返回成功的,就打印“这是。。。”。
好了,这就是思路,假如要硬往设计模式上套,可以套Command Chain.
主要是判断方法,那么就把它定义成一个借口:
interface TypeStringChecker
{
String getTypeName () ;
boolean isInstanceOf (String textValue)
}
完美一点,利用所谓的工厂创建模式,可以使用反射机制,从配置文件里读出来类型名称,并创建实例: TypeStringChecker [] checkerList ;
检查时的代码:
CheckString (String textValue)
{
foreach checker in checkerList
{
if (checker.isInstanceOf (textValue))
print ("[" + textVaue + "] is instance of : " + chceker.getName ());
}
print ("Unsupported Type Or this is a String [" + textVaue + "] ) ;
}
比如编写一个整数的判断,就可以用:
boolean isInstanceOf (String text)
{
try
{
Integer.parseInt (text) ;
}
catch (Throwable e) {return fasle ;}
return true ;
}
进一步的,假设复杂一点的Point,表现形式是:x,y。那么就可以写一个类来判断。
可以参考WebWork中的类型转换器阿。
呵呵,有趣的问题。
2. JAVA怎样判断一个对象的类型
System.out.println(object.getClass().getName());
使用java.lang.Object 中的getClass()方法
/**Class<?> getClass()
Returns the runtime class of this Object. */
3. java 怎样判断一个list里是否有一个对象(object)
1 中自定义,遍历List直到找到对象即可,但List中的对象需要自定义equals方法,即可以与其他对象比较,在什么情况下相同。如满意回答。
2 但上述方法具有特定性,另外还有一些思路,
如
保证list中的对象是可排序的,即实现了Comparable接口功能
如果list没有排序,则可以使用Collecitons类对集合类,不是Map进行操作
如Collections.sort(List),可以进行先排序
然后 利用Collections中的binarySearch方法,找到对象所在下标
int index = Collections.binarySearch(list)
如果index <0,则表示没有该对象,如果index >=0,则表示该对象在list中的位置下标,因此,这里面我们不需要直接取出对象判断,主要看Comparable接口如何实现
String已经实现了equals和comparable接口的方法
所以可以直接使用上诉功能,进行判断,而不用一一遍历。
4. 如何在java里面对Object的类型值进行一个大小的比较
作者:Tao Li
链接:https://www.hu.com/question/36897771/answer/69763955
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
java中类的比较一般有两种方法,一种就是类本身实现Comparable<T>这个接口,比如通过对用户的姓名进行比较排序:
package com.ailot.compare;
public class User implements Comparable<User> {
private String name;
private int age;
private String sex;
public User(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
@Override
public int compareTo(User u) {
// TODO Auto-generated method stub
int c = this.name.compareTo(u.name);
if(c==0){
return 0;
}else if(c > 0){
return 1;
}else{
return -1;
}
}
}
Test.java
package com.ailot.compare;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
List<User> userList = new ArrayList<User>();
for(int i=0;i<10;i++){
int s = new Random().nextInt(20);
User u = new User(s+"张三",i,"男");
userList.add(u);
}
Collections.sort(userList);
for(User user : userList){
System.out.println(user.toString());
}
}
}
排序的话直接用 Collections.sort( userList ) ;就可以了。
作者:Tao Li
链接:https://www.hu.com/question/36897771/answer/69763955
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
另一种就是类没有实现Comparable<T>这个接口,这就需要自己新建一个比较的类,通过实现Comparator<T>来对类进行比较,还是对User类的姓名进行比较排序:
User.java
package com.ailot.compare;
public class User {
private String name;
private int age;
private String sex;
public User(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
UserCompare.java
package com.ailot.compare;
import java.util.Comparator;
public class UserCompare implements Comparator<User> {
@Override
public int compare(User u1, User u2) {
// TODO Auto-generated method stub
int c = u1.getName().compareTo(u2.getName());
if(c == 0){
return 0;
}else if(c < 0){
return -1;
}else{
return 1;
}
}
}
Test.java
package com.ailot.compare;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
List<User> userList = new ArrayList<User>();
for(int i=0;i<10;i++){
int s = new Random().nextInt(20);
User u = new User(s+"张三",i,"男");
userList.add(u);
}
Collections.sort(userList,new UserCompare());
for(User user : userList){
System.out.println(user.toString());
}
}
}
排序的话直接用 Collections.sort(userList,new UserCompare());就可以了。
5. java如何判断object不是map<string.obj
key的数据类型范围不同。
1、Object:可以作为key的有:number,string,以及es6里面的symbol。
2、 Map:js目前存在的数据类型均可以作为key。
6. java中object是什么类型
object类是所有java类的祖先。每个类都使用
object
作为超类。所有对象(包括数组)都实现这个类的方法。
在不明确给出超类的情况下,java会自动把object作为要定义类的超类。
7. 如何在java里面对Object的类型值进行一个大小的比较
java中 Objiect 类 为所有类的 父类,又称上帝。
java中允许多层继承,这意味着总有一个最高的父类,你是没有手动让他继承其它类的。
而JVM会将所有的未继承其它类的类默认继承了Object类,这表明,只要是类均为Object的子类,换个说法 所有的类都可以使用Object类中的方法,与其他类作比较。只需调用方法
equals 即可。注意在这里比较的是地址值。
8. 怎样判断一个Object对象是一个什么类型如(String)
public boolean isString(Object obj){
boolean flag=false;
if(obj instanceof java.lang.String){
flag=true;
}
return flag;
}
或许楼主已经解决了该问题,但还是希望别人进来能够看到该答案!
9. java如何判断对象属性是什么类型
java中判断Object对象类型
复制代码
Object param = params.get(i);
if (param instanceof Integer) {
int value = ((Integer) param).intValue();
prepStatement.setInt(i + 1, value);
} else if (param instanceof String) {
String s = (String) param;
prepStatement.setString(i + 1, s);
} else if (param instanceof Double) {
double d = ((Double) param).doubleValue();
prepStatement.setDouble(i + 1, d);
} else if (param instanceof Float) {
float f = ((Float) param).floatValue();
prepStatement.setFloat(i + 1, f);
} else if (param instanceof Long) {
long l = ((Long) param).longValue();
prepStatement.setLong(i + 1, l);
} else if (param instanceof Boolean) {
boolean b = ((Boolean) param).booleanValue();
prepStatement.setBoolean(i + 1, b);
} else if (param instanceof Date) {
Date d = (Date) param;
prepStatement.setDate(i + 1, (Date) param);
}
复制代码