这个问题源于java版网友的一个帖子
由于不带包结构的类无法被import
而直接使用的话,编译器会报错:cannot resolve symbol
联想到除了直接用new的方式创建一个对象外
还可以通过Class.forName().newInstance()的方式获取类的实例
于是写了一个测试例子如下:
//MyShow.java
//用以被调用的不带包结构定义的类
public class MyShow {
public String show() {
return "None Package";
}
}
//MyClass.java
//用以测试调用的类
package com.zcjl.test.base;
import java.lang.reflect.Method;
public class MyClass {
public static void main(String[] args) {
try {
Object obj = Class.forName("MyShow").newInstance();
Class clazz = obj.getClass();
Method method = clazz.getMethod("show", null);
String returnValue = (String) method.invoke(obj, null);
System.out.println(returnValue);
} catch (Exception e) {
e.printStackTrace();
}
}
}
bingo!编译通过,运行MyClass.class,控制台返回
None Package
分享到:
相关推荐
包(package)是组织类的一种方式,通过合理的包结构可以使代码更有序。 2. 右键选择“New” -> “Java Class”或“Kotlin Class”,输入类名,例如“SimpleButton”。 3. 在新创建的类文件中,编写类定义。对于Java...
如果没有明确指定,JVM会使用默认的类路径,包括当前目录(".")、JRE的lib目录以及任何在`JAVA_HOME/lib/ext`目录下的JAR包。 在描述中提到的博文链接可能提供了更详细的解释,例如如何通过工具查看类的加载来源,...
在Java中,树形结构通常通过对象的引用关系来表示,比如使用类的实例作为节点,实例的成员变量引用其他节点。 将List转换为树形结构,通常涉及到以下步骤: 1. 定义树节点类:创建一个类,用于表示树的节点。这个...
在C#编程语言中,类(Class)和结构(Struct)是两种主要的用户自定义数据类型,它们在很多方面有着相似的语法和用途,但关键的区别在于它们的内存管理和特性。以下是对类和结构之间区别的详细解释: 1. **值类型与...
值得注意的是,除了上述设置问题,还有其他可能的原因会导致无法引用类或注解,例如Maven或Gradle的依赖管理问题、项目结构问题、JDK版本不兼容等。在排查问题时,应确保所有依赖都已正确添加到构建文件(如pom.xml...
3. `friendly`(默认,没有修饰符):同一包内的类可以访问。 4. `private`:只有在同一类内可以访问。 类的定义可以包含这四个修饰符,例如: ```java public class MyClass { ... } ``` 表示这个类是公开的,可以...
Java的包结构类似于文件系统的目录结构,每个包都代表一个独立的命名空间。 在Java中,类的说明符包括访问修饰符、静态修饰符、最终修饰符(final)、抽象修饰符(abstract)等,这些修饰符用来控制类的可见性和...
在C++编程中,类的互相调用是一个常见的设计模式,用于实现复杂的系统结构和对象间的协作。这种机制使得代码更加模块化,提高了代码的复用性和可维护性。但正如描述中提到的,正确使用类的互相调用至关重要,避免...
- **静态内部类**:使用`static`修饰的内部类,不直接持有对外部类的引用,可以独立于外部类实例存在。 4. **孙鑫老师的JAVA教程**: 孙鑫老师的JAVA教程是众多Java初学者学习的重要资源。他的教学风格深入浅出,...
2. **包结构的合理性**:确保你的包结构反映了代码的逻辑关系。如果这四个类有共同的职责或者紧密关联,它们应该被放在同一个包下。相反,如果它们各自独立,那么分开存放也是合理的。 3. **访问控制的调整**:如果...
3. 包(Package):在大型项目中,为了更好地组织和管理类,我们通常将类放入包中。公共类可以属于某个包,如`com.example.myproject`。在类声明前加上包名,如`package com.example.myproject;`,然后在其他地方...
此外,过度使用内部类可能导致代码难以理解和维护,因此应根据实际需求和代码结构来决定是否采用内部类。 总之,内部类和静态内部类是Java中独特的类设计方式,它们提供了灵活的代码组织和访问控制手段。成员内部类...
抽象类是不能实例化的类,通常包含抽象方法,即没有具体实现的方法。抽象方法的声明如下: ```java abstract returnType abstractMethodName([paramlist]); ``` 如果一个类包含抽象方法,那么该类必须声明为抽象类...
抽象类是不能被实例化的类,它通常包含抽象方法(没有实现的方法)和非抽象方法(有实现的方法)。抽象类允许子类继承其部分或全部行为,并可以作为多个类的基类。在Java中,单继承限制了一个类只能直接继承一个抽象...
3. **默认包**:如果源文件没有声明包名,那么它就处于默认包中,默认包没有名称,但类之间不能互相引用,除非它们都在同一个目录下。 4. **包的层次结构**:通常,包的命名会反映出项目或公司的层次结构,例如`...
5. **成员变量(字段)**:类的数据成员,可以是基本类型或引用类型,它们存储类实例的状态。 6. **构造函数**:用于创建类的实例,通常与类名相同,没有返回值。 7. **成员方法**:定义类的行为,包括实例方法和...
它们包含了各种预编译的类和资源,供开发者在项目中引用以实现特定功能。然而,随着时间的推移,项目可能会积累大量的jar包,其中可能包含许多未被使用的类和方法。这不仅会占用硬盘空间,还会增加构建时间和运行时...
4. 操作符:指针有解引用和地址操作符,而引用没有这些操作符,它直接代表所引用的对象。 5. 大小与存储:指针通常占用机器字长,而引用本质上是语法糖,不占额外的内存空间。 在实际编程中,我们根据需要选择使用...
- 实例内部类实例持有对外部类实例的引用,可以访问外部类的所有非私有成员。 - 不能定义静态成员,只能定义实例成员。 - 同名成员变量或方法,使用`this`和`外部类名.this`区分。 10. **静态内部类特点** - ...
Java 类文件结构是Java虚拟机(JVM)执行的基础,它包含了构成Java程序的所有必要信息。Class文件是一种二进制格式,由8位字节组成,数据紧密排列,没有额外的分隔符,确保高效存储。Class文件由一系列的数据项组成...